<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name=ProgId content=VisualStudio.HTML>
<meta name=Originator content="Microsoft Visual Studio .NET 7.1">
</head>
<body>
<!-- Begin Common Doc (Swaf.Workflow.Abstract) -->
<h2>Abstract</h2>
<p>This package defines a business workflow script language that can be easily
extended with new instructions. 

The purpose of workflow is to provide an
extensible business language based on XML documents so that key, high-level business
processes can be written as workflows that define the flow of process,
delegating all the specific work to elements such as business rules. </p>
<h3>General Overview</h3>
<p>The design of workflow is layered to include a basic set of interfaces that
define a generic script engine.  The iterfaces place few restrictions on the format
of the script language or what types of instructions it can support.  Concrete classes
inherit from these interfaces to provide a specific script language and execution environment.
Clients of the workflow interfaces need not care about the specifics of the workflow 
engine itself.</p>

<p>The workflow package defines one implementation of the base workflow interfaces
that supports an XML document format for its "workflow script language".  The engine contains
no built in instructions and uses the "WorkflowInstructions" class factory to create
instruction objects at it processes a workflow script. A base set of instructions for
the engine is defined in the com.Ceridian.workflow.baseinstructions package.  To be
recognized by the engine they need to be defined in the class factory just as any new
workflow script instructions would need to. It is a serious configuration error to
attempt to use workflow without having that class factory defined in the application config.
Only the classes defined within that class factory are available to be used in workflows.</p>
<h3>Design Details</h3>
<p>The basic workflow interfaces for the script engine are IWorkflow and IWorkflowExecutionContext.
The IWorkflow interface is used by client code to execute and control a
workflow, while IWorkflowExecutionContext is used by workflow instruction
classes that implement the IInstruction interface. Any script engine implementation based
on this package should implement both interfaces to integrate properly within the 
framework.  Each unique script engine should use its own factories and other resources.

This package implements the core IWorkflow and IWorkflowExecutionContext interfaces 
in its WorkflowInterpreterEngine class, which is designed to be called as a rule 
through com.Ceridian.Swaf.bizrule.RuleManager class. New workflow engines 
can be created that implement these two interfaces so that a completely different 
paradigm for workflow processing can be offered or a non-interpreting workflow processor 
could be created that compiles the workflow script.</p>
<!-- End Common Doc -->
</body>
</html>
l>
